/*
 * Навигационная панель
 */
package mops.navigator;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Node;
import javafx.scene.control.Accordion;
import javafx.scene.control.AccordionBuilder;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TitledPane;
import javafx.scene.control.TitledPaneBuilder;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeItemBuilder;
import javafx.scene.control.TreeView;
import javafx.scene.control.TreeViewBuilder;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import mops.commons.Commons;

/**
 *
 * @author Жук Александр
 */
public class Navigator {

    private final Node mainNavigator;
    private TableView FtreeGroupTableView;
    
    public Navigator(){
     mainNavigator = createNavigator();   
    }
    
    private final Node createNavigator() {    

    TitledPane treeObjectPane;
    TreeView treeObjectView;

    Accordion accordion = AccordionBuilder.create()
    .panes(
       treeObjectPane = TitledPaneBuilder.create()
        .text(Commons.NAVIGATOR_TREE_OBJECT)
        .graphic((new ImageView(
                        new Image(getClass().getResourceAsStream(Commons.NAVIGATOR_TREE_OBJECT_PICTURE))))
                    )
        .content(
               treeObjectView =  TreeViewBuilder.create()        
                .showRoot(false)
                .editable(false)
                .root(
                    TreeItemBuilder.create()
                    .value("Root")
                    .children(
                        TreeItemBuilder.create()
                        .value("США")
                        .graphic((new ImageView(
                            new Image(getClass().getResourceAsStream(Commons.FLAG_USA_PICTURE))))
                        )
                        .children(
                            TreeItemBuilder.create()
                            .value("813")
                            .build(),
                            TreeItemBuilder.create()
                            .value("345")
                            .build(),
                            TreeItemBuilder.create()
                            .value("343")
                            .build()
                        )
                        .build(),
                        TreeItemBuilder.create()
                        .value("Дания")
                        .graphic((new ImageView(
                            new Image(getClass().getResourceAsStream(Commons.FLAG_DENMARK_PICTURE))))
                        )
                        .children(
                            TreeItemBuilder.create()
                            .value("343")
                            .build(),
                            TreeItemBuilder.create()
                            .value("454")
                            .build(),
                            TreeItemBuilder.create()
                            .value("454")
                            .build()
                        )
                        .build(),
                        TreeItemBuilder.create()
                        .value("Германия")
                        .graphic((new ImageView(
                            new Image(getClass().getResourceAsStream(Commons.FLAG_GERMANY_PICTURE))))
                        )
                        .children(
                            TreeItemBuilder.create()
                            .value("12")
                            .build(),
                            TreeItemBuilder.create()
                            .value("3434")
                            .build(),
                            TreeItemBuilder.create()
                            .value("3434")
                            .build()
                        )
                        .build()
                    )
                    .build()
                )
                .build()
            )
            .build(),
         
        TitledPaneBuilder.create()
        .text(Commons.NAVIGATOR_FILTER)
        .graphic((new ImageView(
                        new Image(getClass().getResourceAsStream(Commons.NAVIGATOR_FILTER_PICTURE))))
                    )
        .content(new TextArea("Фильтры..."))
        .build(),
        TitledPaneBuilder.create()
        .text(Commons.NAVIGATOR_REPORTS)
        .graphic((new ImageView(
                        new Image(getClass().getResourceAsStream(Commons.NAVIGATOR_REPORTS_PICTURE))))
                    )
        .content(new TextArea("Отчеты..."))
        .build()  
        )
        .minWidth(150)
        .maxWidth(200)    
        .build();
    
        treeObjectView.getSelectionModel().selectedItemProperty()
             .addListener(new ChangeListener() {
            @Override
            public void changed(ObservableValue observable, Object oldValue, Object newValue) {
                TreeItem item;
                item = (TreeItem) newValue;
                if (item.getParent().getValue()=="Root")
                {
                    System.out.println(item.getValue() + " chosen in TreeView");
                    FtreeGroupTableView.setVisible(true);
                }
                else
                {
                 FtreeGroupTableView.setVisible(false);
                 System.out.println(item.getParent()+"->"+item.getValue()+" chosen in TreeView");  
                }
            }
        });
    
    accordion.setExpandedPane(treeObjectPane);
    return accordion;
}

  //Получение навигатора   
    public Node getNavigator() throws Exception {
        if (mainNavigator!=null){
          return mainNavigator;  
        }
        else
        {
          throw new Exception(Commons.GET_NAVIGATOR_ERROR);  
        }                
    }
    
    //Установка таблицы связанной с выводом объектов по группам
    public void setTableView(TableView aGroupTableView) {
       if (aGroupTableView!=null)
           FtreeGroupTableView= aGroupTableView;
    }

}
